package cn.rcth;


import java.util.ArrayList;
import java.util.List;

/**
 * JAVA 返回随机数，并根据概率、比率
 * @author wupuxu
 *
 */
public class MathRandom
{
    /**
     * 0出现的概率为%50
     */
    public static double rate0 = 0.50;
    /**
     * 1出现的概率为%30
     */
    public static double rate1 = 0.30;
    /**
     * 2出现的概率为%10
     */
    public static double rate2 = 0.10;
    /**
     * 3出现的概率为%5
     */
    public static double rate3 = 0.05;
    /**
     * 4出现的概率为%2
     */
    public static double rate4 = 0.02;
    /**
     * 5出现的概率为%1
     */
    public static double rate5 = 0.01;
    /**
     * 概率 %0.9
     */
    public static double rate6 = 0.009;
    /**
     * 概率 %0.09
     */
    public static double rate7 = 0.0009;
    /**
     * 概率 %0.0001
     */
    public static double rate8 = 0.000001;

    /**
     * Math.random()产生一个double型的随机数，判断一下
     * 例如0出现的概率为%50，则介于0到0.50中间的返回0
     * @return int
     *
     */
    private String PercentageRandom()
    {
        double randomNumber;
        randomNumber = Math.random();
        if (randomNumber >= 0 && randomNumber <= rate0)
        {
            return "1";
        }
        else if (randomNumber >= rate0  && randomNumber <= rate0 + rate1)
        {
            return "2";
        }
        else if (randomNumber >= rate0 + rate1
                && randomNumber <= rate0 + rate1 + rate2)
        {
            return "3";
        }
        else if (randomNumber >= rate0 + rate1 + rate2
                && randomNumber <= rate0 + rate1 + rate2 + rate3)
        {
            return "4";
        }
        else if (randomNumber >= rate0 + rate1 + rate2 + rate3
                && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4)
        {
            return "5";
        }
        else if (randomNumber >= rate0 + rate1 + rate2 + rate3 + rate4
                && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4 + rate5)
        {
            return "6";
        }
        else if (randomNumber >= rate0 + rate1 + rate2  + rate3 + rate4 + rate5
                && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4 + rate5 + rate6)
        {
            return "7";
        }
        else if (randomNumber >= rate0 + rate1 + rate2  + rate3 + rate4 + rate5 + rate6
                && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4 + rate5 + rate6 + rate7)
        {
            return "8";
        }
        else if (randomNumber >= rate0 + rate1 + rate2 + rate3 + rate4 + rate5 + rate6 + rate7
                && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4
                + rate5 + rate6 + rate7 +rate8)
        {

            return "9";
        }
        return "0";
    }

    /**
     * 测试主程序
     * @param agrs
     */
    public static void main(String[] agrs)
    {
        List<String> ts = chouJang(100);
        System.out.println(ts.toString());
    }
   public static List<String> chouJang(int num){
       int i = 0;
       int c = 0;//大奖
       int v = 0;//7等级
       int b = 0;//6等奖
       int n = 0;//5等奖
       int m = 0;//4等奖
       int s = 0;//3等奖
       int d = 0;//2等奖
       int f = 0;//1等奖
       int g = 0;//未中奖


       //java.lang.Math.random() 返回一个正符号的double值，大于或等于0.0且小于1.0
       MathRandom a = new MathRandom();
       for (i = 0; i <= num; i++)//打印100个测试概率的准确性
       {
           if (a.PercentageRandom().equals("大奖")){
               c ++;
           }
           if (a.PercentageRandom().equals("7")){
               v ++;
           }
           if (a.PercentageRandom().equals("6")){
               b ++;
           }
           if (a.PercentageRandom().equals("5")){
               n ++;
           }
           if (a.PercentageRandom().equals("4")){
               m++;
           }
           if (a.PercentageRandom().equals("3")){
               s ++;
           }
           if (a.PercentageRandom().equals("2")){
               d ++;
           }
           if (a.PercentageRandom().equals("1")){
               f ++;
           }
           if (a.PercentageRandom().equals("0")){
               g ++;
           }
       }
       List<String> list = new ArrayList<>();
       if (c > 0){
           list.add("大奖中了 : " + c + "次");
       }
       if (v > 0){
           list.add("7等级 : " + v + "次");
       }
       if (b > 0){
           list.add("6等奖 : " + b + "次");
       }
       if (n > 0){
           list.add("5等奖 : " + n + "次");
       }
       if (m > 0){
           list.add("4等奖 : " + m + "次");
       }
       if (s > 0){
           list.add("3等奖 : " + s + "次");
       }
       if (d > 0){
           list.add("2等奖 : " + d + "次");
       }
       if (f > 0){
           list.add("1等奖 : " + f + "次");
       }
       if (g > 0){
           list.add("未中奖 : " + g + "次");
       }

       return list;
   }
}
